// pages/component/realname/realname.js
var Api = require("../../common/api/api.js")
var App = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //选择的空间图片
    chooseImg: "",

    //空间简介
    briefIntroduction: "",

    //实名认证证件号码（身份证）
    idNum: "",

    //空间展示图片名称（图片上传后获取名称）
    imgName: "",

    //空间名称
    name: "",

    //真实姓名
    realName: "", 

     //随机字符串，
     randStr: "",
    //随机字符串，
    uploadRandStr: "",
  },

  /**
   * 生命周期函数--监听页面加载 430681199410292934
   */
  onLoad: function (options) {
    console.log("页面加载接收参数：",options);
    this.setData({
      briefIntroduction: options.briefIntroduction,
      name: options.name,
      chooseImg: options.chooseImg
    });
  },

  onShow: function(){
    let _this = this;
    //随机字符串生成
    _this.setData({
      randStr: _this.randomString(true, 8, 8),
      uploadRandStr: _this.randomString(true, 8, 8),
    });
  },


  randomString: function(randomLen, min, max){
    var str = "",
    range = min,
    arr =['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
      'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
      'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F',
      'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
      'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
    // 随机产生
    if(randomLen) {
      range = Math.round(Math.random() * (max - min)) + min;
    }
    for(var i = 0; i<range; i++){
      var pos = Math.round(Math.random() * (arr.length - 1));
      str += arr[pos];
    }
    return str;
  },


  formSubmit:function(e){
    let _this = this;
    var idNum = e.detail.value.idNum; 
    idNum = idNum.replace(/(^\s*)|(\s*$)/g, '');

    var realName = e.detail.value.realName;
    realName = realName.replace(/(^\s*)|(\s*$)/g, '');


    if (realName == "") {
      App.showError("请填写真实姓名");
      return;
    }

    if (idNum == "" || !this.isCnNewID(idNum)){
      App.showError("请填写正确的身份证号码");
      return; 
    }

    console.log("上传图片路径：", _this.data.chooseImg);

    //请求参数封装 
    var data = {
      idNum: idNum,
      openid: wx.getStorageSync('openid'),
      realName: realName,
      randStr: _this.data.randStr,
    }
    var params = JSON.stringify(data)

    //实名认证
    Api.authentication(params).then(function (result) {
      if (result.data.code == 0) {
      
        //上传图片
        wx.uploadFile({
          url: Api.host + "/api/fileUpload/upload",
          filePath: _this.data.chooseImg,
          name: 'file',
          formData: {},
          method: 'POST',
          header: { "Content-Type": "multipart/form-data" },
          success: function (res) {
            var obj = JSON.parse(res.data);
            if (obj.code == 0) {
              //图片上传成功后业务处理
              _this.setData({
                imgName: obj.data
              });
            } else {
              App.showError(res.errMsg);
            }
          },
          fail: (res) => {
            console.log(res)
          },
          complete: () => {
            //请求参数封装 
            var data = {
              briefIntroduction: _this.data.briefIntroduction,
              imgName: _this.data.imgName,
              name: _this.data.name,
              openid: wx.getStorageSync('openid'),
              randStr: _this.data.uploadRandStr,
            }
            var params = JSON.stringify(data)

            _this.setData({
              randStr: _this.data.uploadRandStr,
            });
            Api.createSpace(params).then(function (result) {
              if (result.data.code==0){
                _this.setData({
                  randStr: _this.data.uploadRandStr,
                });
                App.showSuccess("创建成功");
                wx.switchTab({
                  url: '../index',
                });
              }else{
                App.showError(result.data.errMsg);
              }
            }).catch(function (error) {
              console.log("error："+error)
            })
          }
        })
      } else if (result.data.code != -2) {
        // App.showError(result.data.errMsg);
        //随机字符串生成
        _this.setData({
          randStr: _this.randomString(true, 8, 8),
        });
      }
    }).catch(function (error) {
      console.log(error)
    })

    // //上传图片
    // wx.uploadFile({
    //   url: Api.host + "/api/fileUpload/upload",
    //   filePath: _this.data.chooseImg,
    //   name: 'file',
    //   formData: {},
    //   method: 'POST',
    //   header: { "Content-Type": "multipart/form-data" },
    //   success: function (res) {
    //     var obj = JSON.parse(res.data);
    //     if (obj.code == 0) {
    //       //图片上传成功后业务处理
    //       _this.setData({
    //         imgName: obj.data
    //       });
    //     } else {
    //       App.showError(res.errMsg);
    //     }
    //   },
    //   fail: (res) => {
    //     console.log(res)
    //   },
    //   complete: () => {
    //     //请求参数封装 
    //     var data = {
    //       briefIntroduction: this.data.briefIntroduction,
    //       idNum: idNum,
    //       imgName: this.data.imgName,
    //       name: this.data.name,
    //       openid: wx.getStorageSync('openid'),
    //       realName: realName,
    //       randStr: this.data.randStr,
    //     }
    //     var params = JSON.stringify(data)
        
    //     Api.createSpace(params).then(function (result) {
    //       if (result.data.code==0){
    //         App.showSuccess("创建成功");
    //         wx.switchTab({
    //           url: '../index',
    //         });
    //       }else{
    //         App.showError(result.data.errMsg);
    //       }
    //     }).catch(function (error) {
    //       console.log("error："+error)
    //     })
    //   }
    // })
  },


/**
  * 检验18位身份证号码（15位号码可以只检测生日是否正确即可）
  * @param cid 18为的身份证号码
  * @return Boolean 是否合法
  **/
  isCnNewID:function(cid){
    var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
    var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码

    if(/^\d{17}\d|x$/i.test(cid)){
      var sum = 0, idx;

      for (var i = 0; i < cid.length - 1; i++) {
        // 对前17位数字与权值乘积求和
        sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
      }

      // 计算模（固定算法）
      idx = sum % 11;

      // 检验第18为是否与校验码相等
      return arrValid[idx] == cid.substr(17, 1).toUpperCase();
    }else {
      return false;
    }
},


})